# koroFileHeader at Yungoal acer
# Create: 2021-04-23 10:41:48
# LastEdit: 2021-07-07 11:15:53
"""说明暂无"""
__author__ = '749B'

from environs import Env
import logging
import sys

from typing import Dict, Callable


def remove_empty(s0: str) -> str:
    """多行字符串，去除空白行
    注意：结尾的换行符也会被去掉，比较输出的结果像下面这么写
    text = textwrap.dedent('''\\
        Line 1
        Line 2
        Line -1''')  # 这里的引号不能换行
    """
    return '\n'.join([line for line in s0.splitlines() if line.strip()])

def is_dev_environment(read_env=False) -> bool:
    """弃用
    开发环境，返回True，可直接导入环境变量。
    非开发环境，返回False
    """
    env = Env()
    if env.str('COMPUTERNAME', None) == 'STEED':
        if read_env:
            env.read_env()
        return True
    return False

def id_to_dict(id_str: str, sep: str = '/') -> Dict[str, str]:
    """解析id，转换成字典"""
    id_str = id_str.lstrip(sep)
    # key 要转成小写，Azure上的大小写并没有统一
    keys = [k.lower() for i, k in enumerate(id_str.split(sep)) if not i % 2]
    values = [v for i, v in enumerate(id_str.split(sep)) if i % 2]
    return dict(zip(keys, values))

def init_printer(name: str = 'print') -> Callable:
    """使用logging，提供并发安全的print"""
    logger = logging.getLogger(name)
    if logger.hasHandlers():
        return logger.info
    logger.setLevel(logging.INFO)
    ch = logging.StreamHandler(stream=sys.stdout)
    logger.addHandler(ch)
    return logger.info

